// 获取相对时间
/**
 * 获取相对时间，根据传入的时间戳与当前时间的差值，返回不同格式的相对时间描述。
 * @param {number|string} timestamp - 时间戳，可以是数字或字符串类型。
 * @returns {string} - 相对时间描述，格式可能为 "X小时X分钟前"、"HH:MM" 或 "MM-DD"。
 */
export function getRelativeTime(timestamp) {
    // 获取当前时间的时间戳
    const currentTime = Date.now();
    const date = new Date(timestamp || Date.now())
    // 计算当前时间与传入时间戳的时间差
    const diff = currentTime - new Date(timestamp).getTime();
    const twelveHours = 12 * 60 * 60 * 1000;
    const oneDay = 24 * 60 * 60 * 1000;
    // 如果时间差小于一分钟
    if (diff < 60 * 1000) {
        return '刚刚';
    }
    // 如果时间差小于一小时
    else if (diff < 1000 * 60 * 60) {
        const minute = Math.floor(diff / (60 * 1000)); // 分钟数
        // 返回格式化的时间描述，如 "X分钟前"
        return `${minute}分钟前`;
    }
    // 如果时间差小于十二小时
    else if (diff < twelveHours) {
        const hour = Math.floor(diff / (60 * 60 * 1000)); // 小时数
        // 返回格式化的时间描述，如 "X小时X分钟前"
        return `${hour}小时前`;
    }
    // 如果时间差小于一天
    else if (diff < oneDay) {
        const hour = date.getHours().toString().padStart(2, '0'); // 小时
        const minute = date.getMinutes().toString().padStart(2, '0'); // 分钟
        // 返回格式化的时间描述，如 "HH:MM"
        return `${hour}:${minute}`;
    }
    // 如果时间差大于等于一天
    else {
        const month = (date.getMonth() + 1).toString().padStart(2, '0');
        const day = date.getDate().toString().padStart(2, '0');
        return `${month}-${day}`;
    }
}

/**
 * 随机uuid
 * @returns { string } - 格式： "ffb7cefd-02cb-4853-8238-c0292cf988d5"
 */
export function newUuid() {
    const s = [];
    const hexDigits = '0123456789abcdef';
    for (let i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = '-';

    const uuid = s.join('');
    return uuid;
}
